page.tsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import React from 'react';
  2. import {Breadcrumb} from "antd";
  3. import {serverGet} from "@/utils/request";
  4. import './rich.css'
  5. import MainTitle from "@/components/MainTitle";
  6. import ContentNotFound from "@/components/ContentNotFound";
  7. export const dynamicParams = true
  8. export const generateStaticParams = async () => {
  9. try {
  10. const [res, res2] = await Promise.all([
  11. serverGet<Page<NewsUpdates>, { pageNum: number; pageSize: number }>(
  12. "/webSite/getNewsUpdatesListWithoutSpecialNews",
  13. {pageNum: 1, pageSize: 20}, {
  14. next: {
  15. revalidate: 1800
  16. },
  17. cache: "force-cache"
  18. }
  19. ),
  20. serverGet<Page<NewsUpdates>, { pageNum: number; pageSize: number }>(
  21. "/webSite/getSpecialNewsUpdatesList",
  22. {pageNum: 1, pageSize: 20}, {
  23. next: {
  24. revalidate: 1800
  25. },
  26. cache: "force-cache"
  27. }
  28. ),
  29. ])
  30. const records1 = res.code === 200 ? (res.data?.records ?? []) : []
  31. const records2 = res2.code === 200 ? (res2.data?.records ?? []) : []
  32. return [...records1, ...records2].map((item) => ({
  33. id: item.id,
  34. }))
  35. } catch {
  36. return []
  37. }
  38. }
  39. async function Page({
  40. params,
  41. }: {
  42. params: Promise<{ id: string }>
  43. }) {
  44. const {id} = await params;
  45. const res = await serverGet<NewsUpdates, { id: string }>(
  46. "/webSite/getNewsUpdatesById",
  47. {id}, {
  48. next: {
  49. revalidate: 30
  50. },
  51. cache: "force-cache"
  52. }
  53. )
  54. if (!res.data) {
  55. return <ContentNotFound/>
  56. }
  57. return (
  58. <>
  59. <div className="w-4/5 mx-auto">
  60. <div className="pt-5 sm:pt-10 sm:ml-20 flex gap-2">
  61. <span className="text-sm">您当前的所在位置:</span>
  62. <Breadcrumb
  63. separator=">"
  64. items={[
  65. {title: "新闻列表", href: "/news"},
  66. {title: res.data.newsName || "新闻详情"},
  67. ]}
  68. />
  69. </div>
  70. </div>
  71. <div className="py-6 sm:py-10">
  72. <MainTitle title={"新闻动态"} titleLetter={"NEWS_DYNAMIC"}/>
  73. </div>
  74. <div className="w-4/5 mx-auto flex justify-center items-center">
  75. {/*<div className="">*/}
  76. <span className="text-3xl font-bold ">{res.data.newsName}</span>
  77. {/*</div>*/}
  78. </div>
  79. <div
  80. dangerouslySetInnerHTML={{__html: res.data.newsDetails as string}}
  81. className="ql-editor w-9/10 sm:w-7/10 mx-auto sm:px-20 sm:py-10"
  82. />
  83. </>
  84. );
  85. }
  86. export default Page;